package org.royaldev.royalbot.commands.impl;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.apache.commons.lang3.StringEscapeUtils;
import org.pircbotx.hooks.types.GenericMessageEvent;
import org.royaldev.royalbot.BotUtils;
import org.royaldev.royalbot.commands.CallInfo;
import org.royaldev.royalbot.commands.NoticeableCommand;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
public class ChuckCommand extends NoticeableCommand {
private final ObjectMapper om = new ObjectMapper();
@Override
public void onCommand(GenericMessageEvent event, CallInfo callInfo, String[] args) {
final String url;
try {
url = "http://api.icndb.com/jokes/random" + ((args.length > 0) ? "?limitTo=[" + URLEncoder.encode(args[0], "UTF-8") + "]" : "");
} catch (UnsupportedEncodingException ex) {
notice(event, "Couldn't encode in UTF-8.");
return;
}
JsonNode jn;
try {
jn = om.readTree(BotUtils.getContent(url));
} catch (Exception ex) {
notice(event, "Invalid category, probably.");
return;
}
String joke = jn.path("value").path("joke").asText();
if (joke.isEmpty()) {
notice(event, "Couldn't find a joke!");
return;
}
event.respond(StringEscapeUtils.unescapeHtml4(joke));
}
@Override
public String getName() {
return "chuck";
}
@Override
public String getUsage() {
return "<command> (category)";
}
@Override
public String getDescription() {
return "Gets a Chuck Norris joke!";
}
@Override
public String[] getAliases() {
return new String[0];
}
@Override
public CommandType getCommandType() {
return CommandType.BOTH;
}
@Override
public AuthLevel getAuthLevel() {
return AuthLevel.PUBLIC;
}
}